let express = require("express");

// ****1-创建一个路由中间件，来管理 文章相关的路由

let router = express.Router();

let { User } = require("../../model/index.js");

// 2- 动态id根据文章id 获取用户详情
// get /articles/:id
router.get("/", async (req, res) => {
  let r = await User.findById(req.auth.id).select({ password: 0 });
  res.json({
    params: req.params,
    msg: "动态id根据用户id 获取用户详情",
    data: r,
  });
});

// 4- patch-根据id 修改用户信息

router.patch("/", async (req, res) => {
  // let token = req.headers["Authorization"];
  // let r = jwt.verify(token, "testaaaa", { algorithms: ["HS256"] });

  // { username: '123', id: 1, iat: 1688695368, exp: 1691287368 }
  console.log(req.auth);
  console.log(req.auth.id);
  req.params;
  req.body;

  let r = await User.findByIdAndUpdate(req.auth.id, req.body);
  res.json({
    params: req.params,
    body: req.body,
    msg: "-根据id 修改用户信息 ",
  });
});
// 注册接口
//  post请求    返回 接口作用和 和发布的内容 title content
//  {code:1,msg:'发布，发布的内容'}

router.post("/", (req, res) => {
  let u = new User(req.body);
  u.save()
    .then((r) => {
      res.json({
        body: req.body,
        msg: "注册成功 ",
        code: 1,
      });
    })
    .catch((err) => {
      res.json({
        body: req.body,
        msg: "注册失败，用户名已经存在 ",
        code: 0,
      });
    });
  // req.body;
  // 把用户名和密码 保存到 数据中  使用model 中indexjs文件中 User函数
});

let jwt = require("jsonwebtoken");

/**
  登录接口
 */
router.post("/" + "login", (req, res) => {
  req.body;

  // 判断
  // 查询用户名和请请求体相等 并且 密码和 请全体的密码相等
  User.findOne({
    username: req.body.username,
    password: req.body.password,
  }).then((r) => {
    console.log(r);
    // 判断r 是否为 null
    if (r) {
      if (r.isEnable == false) {
        res.json({
          body: req.body,
          msg: "账号被禁用 ",
          code: 0,
        });
        return;
      }
      // 如果用户名和密码满足这个条件  就认为 登录成功，否则认为登录失败
      let token = jwt.sign(
        { username: req.body.username, id: r._id },
        "testaaaa",
        {
          expiresIn: "30d",
          algorithm: "HS256",
        }
      );

      res.json({
        // body: req.body,
        uid: r._id,
        msg: "登录 成功 ",
        code: 1,
        token,
      });
    } else {
      res.json({
        body: req.body,
        msg: "登录 用户名或者密码不对 ",
        code: 0,
      });
    }
  });
});

// ******3-导出文章路由中间件
module.exports = router;
